Next: Business Days, Previous: Date Conversions, Up: Date Arithmetic [Contents][Index]
The t N (calc-now) [now]
command pushes the current date and time on the stack as a date
form. The time is reported in terms of the specified time zone;
with no numeric prefix argument, t N reports for the
current time zone.
The t P (calc-date-part) command
extracts one part of a date form. The prefix argument specifies
the part; with no argument, this command prompts for a part code
from 1 to 9. The various part codes are described in the
following paragraphs.
The M-1 t P [year] function extracts
the year number from a date form as an integer, e.g., 1991. This
and the following functions will also accept a real number for an
argument, which is interpreted as a standard Calc day number.
Note that this function will never return zero, since the year 1
BC immediately precedes the year 1 AD.
The M-2 t P [month] function extracts
the month number from a date form as an integer in the range 1 to
12.
The M-3 t P [day] function extracts
the day number from a date form as an integer in the range 1 to
31.
The M-4 t P [hour] function extracts
the hour from a date form as an integer in the range 0 (midnight)
to 23. Note that 24-hour time is always used. This returns zero
for a pure date form. This function (and the following two) also
accept HMS forms as input.
The M-5 t P [minute] function extracts
the minute from a date form as an integer in the range 0 to
59.
The M-6 t P [second] function extracts
the second from a date form. If the current precision is 12 or
less, the result is an integer in the range 0 to 59. For higher
precision, the result may instead be a floating-point
number.
The M-7 t P [weekday] function
extracts the weekday number from a date form as an integer in the
range 0 (Sunday) to 6 (Saturday).
The M-8 t P [yearday] function
extracts the day-of-year number from a date form as an integer in
the range 1 (January 1) to 366 (December 31 of a leap
year).
The M-9 t P [time] function extracts
the time portion of a date form as an HMS form. This returns
‘0@ 0' 0"’ for a pure date
form.
The t M (calc-new-month)
[newmonth] command computes a new date form that
represents the first day of the month specified by the input
date. The result is always a pure date form; only the year and
month numbers of the input are retained. With a numeric prefix
argument n in the range from 1 to 31, t M
computes the nth day of the month. (If n is
greater than the actual number of days in the month, or if
n is zero, the last day of the month is
used.)
The t Y (calc-new-year)
[newyear] command computes a new pure date form that
represents the first day of the year specified by the input. The
month, day, and time of the input date form are lost. With a
numeric prefix argument n in the range from 1 to 366,
t Y computes the nth day of the year (366
is treated as 365 in non-leap years). A prefix argument of 0
computes the last day of the year (December 31). A negative
prefix argument from -1 to -12 computes the first
day of the nth month of the year.
The t W (calc-new-week)
[newweek] command computes a new pure date form that
represents the Sunday on or before the input date. With a numeric
prefix argument, it can be made to use any day of the week as the
starting day; the argument must be in the range from 0 (Sunday)
to 6 (Saturday). This function always subtracts between 0 and 6
days from the input date.
Here’s an example use of newweek: Find the
date of the next Wednesday after a given date. Using M-3 t
W or ‘newweek(d, 3)’ will give you
the preceding Wednesday, so ‘newweek(d+7,
3)’ will give you the following Wednesday. A further
look at the definition of newweek shows that if the
input date is itself a Wednesday, this formula will return the
Wednesday one week in the future. An exercise for the reader is
to modify this formula to yield the same day if the input is
already a Wednesday. Another interesting exercise is to preserve
the time-of-day portion of the input (newweek resets
the time to midnight; hint: how can newweek be
defined in terms of the weekday
function?).
The ‘pwday(date)’ function
(not on any key) computes the day-of-month number of the Sunday
on or before date. With two arguments,
‘pwday(date, day)’
computes the day number of the Sunday on or before day number
day of the month specified by date. The
day must be in the range from 7 to 31; if the day
number is greater than the actual number of days in the month,
the true number of days is used instead. Thus
‘pwday(date, 7)’ finds the
first Sunday of the month, and
‘pwday(date, 31)’ finds the
last Sunday of the month. With a third weekday
argument, pwday can be made to look for any day of
the week instead of Sunday.
The t I (calc-inc-month)
[incmonth] command increases a date form by one
month, or by an arbitrary number of months specified by a numeric
prefix argument. The time portion, if any, of the date form stays
the same. The day also stays the same, except that if the new
month has fewer days the day number may be reduced to lie in the
valid range. For example, ‘incmonth(<Jan 31,
1991>)’ produces ‘<Feb 28,
1991>’. Because of this, t I t I and
M-2 t I do not always give the same results
(‘<Mar 28, 1991>’ versus
‘<Mar 31, 1991>’ in this
case).
The ‘incyear(date, step)’ function increases a date form by the specified number of years, which may be any positive or negative integer. Note that ‘incyear(d, n)’ is equivalent to ‘incmonth(d, 12*n)’, but these do not have simple equivalents in terms of day arithmetic because months and years have varying lengths. If the step argument is omitted, 1 year is assumed. There is no keyboard command for this function; use C-u 12 t I instead.
There is no newday function at all because
F [floor] serves this purpose. Similarly,
instead of incday and incweek simply
use ‘d + n’ or ‘d + 7
n’.
See Basic
Arithmetic, for the f ] [incr]
command which can adjust a date/time form by a certain number of
seconds.
Next: Business Days, Previous: Date Conversions, Up: Date Arithmetic [Contents][Index]